<!--
 
  Copyright (c) 2002-2005	David Ross,	Chris Scott
  
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
		
			
 $Id: readme.html,v 1.3 2005/10/11 03:46:35 wiersma Exp $

-->

<html>
<head>
	<title>CFML stupid feedviewer readme</title>
	<link rel="stylesheet" type="text/css" href="view/css/style.css" />
</head>

<body>
<h2>Readme</h2>

<p>This "feedviewer" is server-side weblog aggregator, ala FullAsAGoog.com or MarkMe.com.</p>
<p>A "channel" refers to weblog, and channels can exists in multiple categories. Feedviewer will retrieve and parse rss and atom feeds into entries which are stored to later be displayed.</p>
<p>Feedviewer was written to emphasize the decoupling of application Model and View from a controller, thus I've included both Mach-ii and Fusebox4 controllers, as well as a sample facade for remote calls.</p>
<p>Feedviewer defaults to using xml as a storage mechanism. This is to minimize any effort required in actually making it run. You should be able to test the Fusebox4 and Remote versions without touching anything. If you wish to use the mach-ii framework for a controller, you will need to have mach-ii installed. Get it at: <a href="http://www.mach-ii.com">mach-ii.com</a></p>
<p>Feedviewer uses coldspring (duh) to manage its services. The service definitions are in the <a href="services.xml">services.xml</a> file located in this directory. I tried to annotate the service definitions as heavily as possible.</p>
<p>Using a database:<br /> 
	<ul>
	<li>I originally wrote Feedviewer to use a relational database, and if you intend to actually USE the app to aggregate weblogs, it's highly advisable that you use a database rather than the default xml-storage mechanism. The xml-storage components were written to be very pessimistic, so all operations result in read/write to the actual file.</li>
	<li>Feedviewer will work on MS SQLServer2000 (or MSDE), and MySql</li>
	<li>There is ddl for each vendor in the /data/ddl/ directory that can be used to create the database</li>
	<li>Then you must create a datasource in CF administrator</li>
	<li>To configure the application to use the database-storage components:<br />
		<ul>
		<li>Edit app-config.xml (for the mach-ii version) or fusebox.init.cfm (for the fusebox4 version) or application.cfm (for the remote facade version)</li>
		<li>Change dstype to "rdbms"</li>
		<li>Change dsn to the name of the datasource you created</li>
		<li>Change dsvendor to "mysql" or "mssql" depending on which vendor's database you used</li>
		<li>Edit services.xml<br /> 
			<ul>
				<li>Change any references to xml-storage gateways and DAOs to their sql counterparts. For instance, "coldspring.examples.feedviewer.model.category.xmlCategoryDAO" needs to be changed to "coldspring.examples.feedviewer.model.category.sqlCategoryDAO"<br /> 
					There are only 6 definitions that need to be changed:<br /> 
					<ul>
						<li>CategoryDAO</li>
						<li>CategoryGateway</li>
						<li>ChannelDAO</li>
						<li>ChannelGateway</li>
						<li>EntryDAO</li>
						<li>EntryGateway</li>
					</ul>
				</li>
			</ul>
		</ul> 
	 </li>
	</ul>

<p>Feedviewer is shipping with two rss/atom "normalizer" implementations:<br /> 
&nbsp;&nbsp;&nbsp;1) Roger Benningfield's RSS normalizer
&nbsp;&nbsp;&nbsp;2) java ROME library 
</p>
<p>Right now, the services.xml file is configured to use Roger Benningfield's normalizer. I included ROME because I had difficulty getting Roger's to normalize several popular feeds. To use ROME, you 
will have to include two jar files, rome-0.5.jar and jdom.jar, in CFMX's classpath. They are included in the javalib/ folder. After a server restart edit services.xml to point at the ROME "normalizer" (just a wrapper I wrote). There are instructions in services.xml as to how one would do that.</p>

<p>The feedviewer-remote directory contains an example of how to setup a flash remoting interface to this application. It uses ColdSpring's flashUtilityService which can convert CFC instances into a java class that the Flash Remoting Gateway can convert into an Actionscript class. This same process also works for arguments passed to CFC from the flash client. In case the Actionscript class will get converted to CFC instance. You can configure the mappings in the services.xml file under the flashMappings bean. </p>

<p>This application is far from complete... it only has basic functionality and was designed to demonstrate the use of coldspring to manage a service layer. In the future its feature set may become more rounded, as I do have a need for a CFML-based server side aggregator to 
replace a php-version I wrote.</p>

<p>If you have any questions, the best place would be the forums on <a href="http://cfopen.org/projects/coldspring">coldspring's cfopen site</a><br /></p>
	
<p>Otherwise, feel free to email me at dave.ross@gmail.com</p>

<p>Thanks!</p>
</body>
</html>